package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲字符流: BufferedWriter 和 BufferedReader
 * 缓冲字符流内部默认有一个8kb(8192)长的char数组, 可以保证读写文本数据的效率
 *
 * PrintWriter 是具有自动行刷新的缓冲字符输出流 --------------- 常用
 * 实际上他的缓冲操作还是依靠 BufferedWriter 实现的, 他的内部总是连接着 BufferedWriter
 */
public class PwDemo {
    public static void main(String[] args) throws FileNotFoundException {
        /*
        PrintWriter pw = new PrintWriter("pw.txt");//PrintWriter默认在底层做了流连接
        pw.println("三十功名尘与土,八千里路云和月.");
        pw.println("掌中舞罢萧声绝,三十六宫秋夜长.");
        System.out.println("写出完毕");
        pw.close();
         */

        //文件流: 低级流/节点流, 作用: 连接程序和稳健的管道, 负责将字节写入到文件中
        FileOutputStream fos = new FileOutputStream("pw2.txt");
        //转换流: 高级流/字符流, 作用: 连接子街与字符流, 负责将写出的字符转换为字节
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
        //缓冲流: 高级流/字符流, 作用: 缓冲字符流, 缓冲字符流内部默认有一个8kb(8192)长的char数组, 可以保证读写文本数据的效率
        BufferedWriter bw = new BufferedWriter(osw);
        // PrintWriter: 高级流/字符流, 作用: 按行写出字符串(println), 自动行刷新(一会儿用)
        PrintWriter pw = new PrintWriter(bw);
        pw.println("三十功名尘与土,八千里路云和月.");
        pw.println("掌中舞罢萧声绝,三十六宫秋夜长.");
        System.out.println("写出完毕");
        pw.close();
    }
}
